/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import model.Voorstelling;
import persistence.VoorstellingService;
import persistence.ZetelService;

/**
 *
 * @author Matthy & Jelle
 */
public class BeschikbarePlaatsenPanel extends JPanel{

  /**
   * Labels.
   */
  private JLabel voorstellingLabel;
  private JLabel restultaatLabel;

  /**
   * Input Fields.
   */
  private JComboBox voorstellingSelect;
  private JList resultaatList;

  /**
   * Buttons.
   */
  private JButton submitButton;

  public BeschikbarePlaatsenPanel() {
    super();
    initialiseerComponenten();
    layoutComponenten();
    initialiseerEventHandlers();
  }

  private void initialiseerComponenten() {
    // Voorstelling
    this.voorstellingLabel = new JLabel("Voorstelling");
    this.voorstellingSelect = new JComboBox(new VoorstellingService().getVoorstellingen(new Date()).toArray());

    // Resultaat
    this.restultaatLabel = new JLabel("Resultaat");
    this.resultaatList = new JList();

    // Submit
    this.submitButton = new JButton("Toon beschikbare zetels");
  }

  private void layoutComponenten() {
    this.setLayout(new GridLayout(3, 2));

    // Voorstelling
    this.add(this.voorstellingLabel);
    this.add(this.voorstellingSelect);

    // Resultaat
    this.add(this.restultaatLabel);
    JScrollPane scrollpane = new JScrollPane(this.resultaatList);
    scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    scrollpane.setPreferredSize(new Dimension(scrollpane.getWidth(), 50));
    this.add(scrollpane);

    // Submit
    this.add(this.submitButton);
  }

  private void initialiseerEventHandlers() {
    this.submitButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent ae) {
        Boolean error = false;
        if (voorstellingSelect.getSelectedIndex() == -1) {
          voorstellingLabel.setForeground(Color.RED);
          error = true;
        }
        else {
          voorstellingLabel.setForeground(Color.BLACK);
        }
        if (!error) {
          Voorstelling voorstelling = (Voorstelling)voorstellingSelect.getSelectedItem();
          resultaatList.setListData(new ZetelService().getVrijeZetels(voorstelling).toArray());
        }
      }
    });
  }

}
